package com.lingxinst.business.main.net

import com.lynn.common.net.entity.BaseResponse
import io.reactivex.rxjava3.core.Observable
import retrofit2.http.Body
import retrofit2.http.POST

/**
 * @description: 所有的Api网络接口
 * @author: bailing
 * @datetime: 2025/5/28 11:01
 **/
interface MainService {
    /**
     * APP刚打开的时候展览页
     */
    @POST(API_INDEX_BANNER)
    fun postIndexBannerImages(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 获取验证码
     */
    @POST(API_GET_CODE)
    fun getCode(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 登录
     */
    @POST(API_LOGIN)
    fun login(@Body map: MutableMap<String, String>): Observable<BaseResponse>


///////////////////////////////////////////////////////////////////////////
// 首页
///////////////////////////////////////////////////////////////////////////

    /**
     * 首页轮播
     */
    @POST(HOME_BANNER)
    fun queryHomeBanner(): Observable<BaseResponse>


    /**
     * 首页视频
     */
    @POST(HOME_LIST)
    fun queryHomeList(): Observable<BaseResponse>

    /**
     * 视频详情
     */
    @POST(VIDEO_DETAIL)
    fun queryVideoDetail(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 视频详情中的类似视频推荐
     */
    @POST(VIDEO_DETAIL_LIST)
    fun queryRecommendList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 点击喜欢
     */
    @POST(VIDEO_CLICK_LOVE)
    fun loveVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 点击取消喜欢
     */
    @POST(VIDEO_CLICK_CANCEL_LOVE)
    fun cancelLoveVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 举报视频
     */
    @POST(VIDEO_CLICK_JUBAO)
    fun jubaoVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 打赏列表
     */
    @POST(DASHANG_LIST)
    fun queryDaShangList(): Observable<BaseResponse>


    /**
     * 评论：视频评论列表
     */
    @POST(VIDEO_COMMENT_LIST)
    fun queryCommentList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 评论视频
     */
    @POST(COMMENT_VIDEO)
    fun commentVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 获取针对评论者的内容列表
     */
    @POST(VIDEO_COMMENT_USER_LIST)
    fun queryReplyList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 评论视频的评论者
     */
    @POST(COMMENT_VIDEO_USER)
    fun replyComment(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 对视频的评论点赞
     */
    @POST(ZAN_VIDEO)
    fun zanVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 对视频的评论取消点赞
     */
    @POST(CANCEL_ZAN_VIDEO)
    fun cacelZanVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 提交打赏
     */
    @POST(DASHANG_SUZBMIT)
    fun submitDaShang(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 热门搜索
     */
    @POST(VIDEO_SEARCH_HOT)
    fun queryHotSearchList(): Observable<BaseResponse>

    /**
     * 删除我的搜索记录
     */
    @POST(DEL_SEARCH_HISTORY)
    fun delSearchHistory(): Observable<BaseResponse>

    /**
     * 搜索视频是否存在
     */
    @POST(SEARCH_EXSIST)
    fun existVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 视频搜索
     */
    @POST(VIDEO_SEARCH)
    fun searchVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>



///////////////////////////////////////////////////////////////////////////
// 频道
///////////////////////////////////////////////////////////////////////////

    /**
     * 热门频道/频道顶部推荐频道
     */
    @POST(CHANNEL_HOT)
    fun queryChannelHotList(): Observable<BaseResponse>

    /**
     * 频道列表：Tab
     */
    @POST(CHANNEL_LIST_TAB)
    fun queryChannelTabList(): Observable<BaseResponse>

    /**
     * 单频道视频列表
     */
    @POST(CHANNEL_LIST)
    fun queryListByChannelId(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 热门频道关注
     */
    @POST(CHANNEL_MORE)
    fun queryChannelListMore(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 频道详情
     */
    @POST(CHANNEL_DETAIL)
    fun queryChannelDetail(@Body map: MutableMap<String, String>): Observable<BaseResponse>


///////////////////////////////////////////////////////////////////////////
// 发布
///////////////////////////////////////////////////////////////////////////

    /**
     * 关注用户/频道
     */
    @POST(FOLLOW)
    fun followUserOrChannel(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 取消关注用户/频道
     */
    @POST(CANCEL_FOLLOW)
    fun cancelFollowUserOrChannel(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * todo 上传视频
     */
    @POST(UPLOAD_VIDEO)
    fun uploadVideo(): Observable<BaseResponse>

    /**
     * todo 上传图片【上传头像/上传提现的微信收款码】
     */
    fun uploadImage(): Observable<BaseResponse>

    /**
     * 发布视频,标签暂时还没有考虑好，怎么加，先不加
     */
    @POST(PUBLISH_VIDEO)
    fun publishVideo(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 选择频道:创建视频的时候选择频道不分页
     */
    @POST(CHOOSE_CHANNEL_LIST)
    fun chooseChannelList(@Body map: MutableMap<String, String>): Observable<BaseResponse>


///////////////////////////////////////////////////////////////////////////
// 动态
///////////////////////////////////////////////////////////////////////////

    /**
     * 查询发布者信息列表
     */
    @POST(AUTHOR_LIST)
    fun queryAuthorList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 发布者信息
     */
    @POST(AUTHOR_INFO)
    fun queryAuthorInfo(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 发布者的动态信息
     */
    @POST(AUTHOR_DYNAMIC_LIST)
    fun queryAuthorDynamicList(@Body map: MutableMap<String, String>): Observable<BaseResponse>


///////////////////////////////////////////////////////////////////////////
// 我的
///////////////////////////////////////////////////////////////////////////

    /**
     * 我的个人信息
     */
    @POST(PERSON_INFO)
    fun queryPersonInfo(): Observable<BaseResponse>

    /**
     * 个人信息修改
     */
    @POST(CHANGE_PERSON_INFO)
    fun changePersonInfo(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 更换手机号-发送验证码
     */
    @POST(CHANGE_MOBIEL_SMS)
    fun getChangeMobileCode(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 更换手机号
     */
    @POST(CHANGE_MOBIEL)
    fun changeMobile(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 更换用户密码
     */
    @POST(CHANGE_PWD)
    fun changeUserPassword(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 用户协议
     */
    @POST(USER_PROTOCOL)
    fun queryUserProtocol(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 我的粉丝列表
     */
    @POST(MY_FAN_LIST)
    fun queryMyFanList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 关注的人员列表
     */
    @POST(MY_FOLLOOW_LIST)
    fun queryMyFollowList(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 我的收入
     */
    @POST(MY_INCOME)
    fun queryMyIncome(): Observable<BaseResponse>


    /**
     * 我的收入明细
     */
    @POST(MY_INCOME_IN)
    fun queryMyIncomeIn(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    @POST(MY_INCOME_OUT)
    // This function is used to query the user's income in
    fun queryMyIncomeOut(@Body map: MutableMap<String, String>): Observable<BaseResponse>



    /**
     * 获取支付方式
     */
    @POST(GET_PAY_TYPE)
    fun queryPayType(): Observable<BaseResponse>


    /**
     * 充值
     */
    @POST(RECHARGE)
    fun recharge(): Observable<BaseResponse>


    /**
     * 获取提现方式
     */
    @POST(GET_WITHDRAW_TYPE)
    fun queryWithdrawType(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 提现申请
     */
    @POST(WITHDRAW_APPLY)
    fun applyWithdraw(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 互动消息列表
     */
    @POST(MSG_INTERACT_LIST)
    fun queryMsgInteractList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 互动消息详情
     */
    @POST(MSG_INTERACT_DETAIL)
    fun queryMsgInteractDetail(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 系统消息列表
     */
    @POST(MSG_SYS_LIST)
    fun queryMsgSysList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 系统消息详情
     */
    @POST(MSG_SYS_DETAIL)
    fun queryMsgSysDetail(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 我的粉丝列表
     */
    @POST(MY_LOVE_LIST)
    fun queryMyLoveList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 删除我的喜欢
     */
    @POST(MY_LOVE_DEL)
    fun delMyLove(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 我的历史记录列表
     */
    @POST(MY_HISTORY_LIST)
    fun queryMyHistoryList(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 删除我的历史记录
     */
    @POST(MY_HISTORY_DEL)
    fun delMyHistory(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 我的缓存列表
     */
    @POST(MY_CACHE_LIST)
    fun queryMyCacheList(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 删除我的缓存
     */
    @POST(MY_CACHE_DEL)
    fun delMyCache(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 我的投稿
     */
    @POST(MY_TOUGAO_LIST)
    fun queryMyTougaoList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 删除我的投稿
     */
    @POST(MY_TOUGAO_DEL)
    fun delMyTougao(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 评论管理
     */
    @POST(COMMENT_MANAGE_LIST)
    fun queryMyCommentList(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 删除我对视频的评论
     */
    @POST(COMMENT_DEL)
    fun delMyComment(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 提交意见反馈
     */
    @POST(SUBMIT_ADVICE)
    fun submitAdvice(@Body map: MutableMap<String, String>): Observable<BaseResponse>


    /**
     * 查询设置的开关
     */
    @POST(QUERY_NOTIFY_SWITCH)
    fun queryNotifySwitch(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 更改通知开关
     */
    @POST(UPDATE_NOTIFY_SWITCH)
    fun changeNotifySwitch(@Body map: MutableMap<String, String>): Observable<BaseResponse>

    /**
     * 注销
     */
    @POST(LOGIN_OUT)
    fun logout(@Body map: MutableMap<String, String>): Observable<BaseResponse>


}